package com.hello.system.domain.dto;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.hello.system.domain.RentalMemberAddresses;
import lombok.Data;

/**
 * 租赁订单详情DTO - 包含设备名称和地址详细信息
 * 
 * @author hello
 * @date 2025-07-30
 */
@Data
public class RentalOrdersWithDetailsDto
{
    /** 订单ID */
    private Long orderId;

    /** 订单号 */
    private String orderNo;

    /** 租客用户ID */
    private Long userId;

    /** 设备ID */
    private Long deviceId;

    /** 设备名称 */
    private String deviceName;

    /** 租赁开始日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date startDate;

    /** 租赁结束日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date endDate;

    /** 实际归还日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date actualReturnDate;

    /** 租赁天数 */
    private Long rentDays;

    /** 日租金 */
    private BigDecimal dailyRent;

    /** 总租金 */
    private BigDecimal totalRent;

    /** 押金 */
    private BigDecimal deposit;

    /** 订单总金额 */
    private BigDecimal totalAmount;

    /** 订单状态：1-待支付，2-已支付，3-进行中，4-已完成，5-已取消，6-已退款 */
    private Integer status;

    /** 支付状态：0-未支付，1-已支付，2-部分退款，3-全额退款 */
    private Integer paymentStatus;

    /** 交付方式：1-自提，2-配送 */
    private Integer deliveryType;

    /** 配送地址ID */
    private Long deliveryAddressId;

    /** 配送地址详细信息 */
    private RentalMemberAddresses deliveryAddress;

    /** 自提地址 */
    private String pickupAddress;

    /** 取消原因 */
    private String cancelReason;

    /** 备注 */
    private String remark;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date createdTime;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date updatedTime;
}